package com.vca.common.model.order;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("vca_order")
@ApiModel(value="OrderStoreOrder对象", description="订单表")
public class StoreOrder implements Serializable {
    private static final long serialVersionUID = 7113967006855066607L;

    @ApiModelProperty(value = "订单ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    @ApiModelProperty(value = "主订单号")
    private String orderId;

    @ApiModelProperty(value = "用户id")
    private Integer uid;

    @ApiModelProperty(value = "用户姓名")
    private String realName;

    @ApiModelProperty(value = "用户电话")
    private String userPhone;

    @ApiModelProperty(value = "详细地址")
    private String userAddress;

    @ApiModelProperty(value = "收货人所在省")
    private String province;

    @ApiModelProperty(value = "收货人所在市")
    private String city;

    @ApiModelProperty(value = "收货人所在区")
    private String district;

    @ApiModelProperty(value = "收货人详细地址")
    private String detail;

    @ApiModelProperty(value = "运费金额")
    private BigDecimal freightPrice;

    @ApiModelProperty(value = "订单商品总数")
    private Integer totalNum;

    @ApiModelProperty(value = "订单总价")
    private BigDecimal totalPrice;

    @ApiModelProperty(value = "实际支付金额")
    private BigDecimal payPrice;

    @ApiModelProperty(value = "购买积分商品所花费的积分")
    private Integer payIntegral;

    @ApiModelProperty(value = "积分商品ID   0=没有积分商品")
    private Integer integralId;

//    @ApiModelProperty(value = "支付邮费")
//    private BigDecimal payPostage;

    @ApiModelProperty(value = "抵扣金额")
    private BigDecimal deductionPrice;

    @ApiModelProperty(value = "礼品卡id")
    private Integer couponId;

    @ApiModelProperty(value = "礼品卡金额")
    private BigDecimal couponPrice;

    @ApiModelProperty(value = "支付状态 0未支付 1已支付")
    private Boolean paid;

    @ApiModelProperty(value = "支付时间")
    private Date payTime;

    @ApiModelProperty(value = "支付方式")
    private String payType;

    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    @ApiModelProperty(value = "订单状态（0：待发货；1：待收货【已预约（未参与）】；2：已收货，待评价【已参与】；3：已完成；）")
    private Integer status;

    @ApiModelProperty(value = "退货订单号")
    private String returnOrderNo;

    @ApiModelProperty(value = "退货运单号")
    private String returnWaybillNo;

    @ApiModelProperty(value = "退货人姓名")
    private String returnUserName;

    @ApiModelProperty(value = "退货人手机号")
    private String returnUserPhone;

    @ApiModelProperty(value = "退货人地址")
    private String returnUserAddress;

    @ApiModelProperty(value = "同意退货时间")
    private Date agreedReturnTime;

    @ApiModelProperty(value = "取件日期")
    private String pickUpDate;

    @ApiModelProperty(value = "取件开始时间")
    private String pickUpStartTime;

    @ApiModelProperty(value = "取件结束时间")
    private String pickUpEndTime;

    @ApiModelProperty(value = "退款状态  0 未退款 1 申请中 2 已退款 3 退款中  4 待退货 5 退货中 6 退款取消")
    private Integer refundStatus;

    @ApiModelProperty(value = "退款图片")
    private String refundReasonWapImg;

    @ApiModelProperty(value = "退款用户说明")
    private String refundReasonWapExplain;

    @ApiModelProperty(value = "前台退款原因")
    private String refundReasonWap;

    @ApiModelProperty(value = "不退款的理由")
    private String refundReason;

    @ApiModelProperty(value = "退款申请时间")
    private Date refundApplicationTime;

    @ApiModelProperty(value = "退款时间")
    private Date refundReasonTime;

    @ApiModelProperty(value = "退款金额")
    private BigDecimal refundPrice;

    @ApiModelProperty(value = "快递名称")
    private String deliveryName;

    @ApiModelProperty(value = "发货类型")
    private String deliveryType;

    @ApiModelProperty(value = "主运单号")
    private String masterWaybillNo;

    @ApiModelProperty(value = "消费赚取积分")
    private Integer gainIntegral;

    @ApiModelProperty(value = "使用积分")
    private Integer useIntegral;

    @ApiModelProperty(value = "给用户退了多少积分")
    private Integer backIntegral;

    @ApiModelProperty(value = "备注")
    private String mark;

    @ApiModelProperty(value = "是否删除")
    private Boolean isDel;

    @ApiModelProperty(value = "管理员备注")
    private String remark;

    @ApiModelProperty(value = "成本价")
    private BigDecimal cost;

    @ApiModelProperty(value = "核销码")
    private String verifyCode;

    @ApiModelProperty(value = "店员id")
    private Integer clerkId;

    @ApiModelProperty(value = "支付渠道(0-微信公众号,1-微信小程序,2-H5,3-余额,4-微信AppIos,5-微信AppIos安卓,6-支付宝支付，7-支付宝app支付)")
    private Integer isChannel;

    @ApiModelProperty(value = "后台是否删除")
    private Boolean isSystemDel;

    @ApiModelProperty(value = "更新时间")
    private Date updateTime;

    @ApiModelProperty(value = "快递公司简称")
    private String deliveryCode;

    @ApiModelProperty(value = "订单类型:0-课程订单 1=套课订单 2=讲座订单 3=展览订单 4=商品订单")
    private Integer type;

    @ApiModelProperty(value = "商品总价")
    private BigDecimal proTotalPrice;

    @ApiModelProperty(value = "改价前支付金额")
    private BigDecimal beforePayPrice;

    @ApiModelProperty(value = "是否改价,0-否，1-是")
    private Boolean isAlterPrice;

    @ApiModelProperty(value = "0:顺丰下单失败 1 顺丰下单成功  2 顺丰订单取消成功 3顺丰取消失败 4 顺丰订单拦截成功 5 顺丰订单拦截失败")
    private Integer deliverySfStatus;

    @ApiModelProperty(value = "0:顺丰下单失败 1 顺丰下单成功  2 顺丰订单取消成功 3顺丰取消失败 4 顺丰订单拦截成功 5 顺丰订单拦截失败")
    private Integer returnSfStatus;

    @ApiModelProperty(value = "银联全民付 订单号")
    private String umsMerOrderId;

    @ApiModelProperty(value = "银联全民付 第三方订单号")
    private String targetOrderId;

    @ApiModelProperty(value = "开票状态  0=未申请 1=已申请")
    private Integer invoicingStatus;

    @ApiModelProperty(value = "0=用户购买  1=管理员赠送")
    private Integer userType;

    @ApiModelProperty(value = "发货时间")
    private Date deliveryTime;

    @ApiModelProperty(value = "退货发货时间")
    private Date returnDeliveryTime;

    @ApiModelProperty(value = "申请退款类型（预留）")
    private String applyRefundType;

    @ApiModelProperty(value = "成交时间")
    private Date closingTime;

    @ApiModelProperty(value = "售后截止时间")
    private Date afterSalesDeadline;
}
